library logcat_viewer;

export 'page/show_log.dart';
export 'utils/logcat_utils.dart';

// import 'dart:async';
//
// import 'package:flutter/services.dart';
//
// typedef LogCallback<T> = void Function(T);
//
// class LogcatViewer {
//
//   final MethodChannel _channel = const MethodChannel('LogcatViewerPlugin/controrller');
//   final EventChannel _eventChannel = const EventChannel('LogcatViewerPlugin/listen');
//
//   late String _logs = "";
//   late int maxLogCount = 10000;// 暂时定为1万个log信息，减轻内存压力，可调整
//
//   late List<LogCallback<List<String>>> _listenerList = [];
//
//   late List<String> _LogList = [];
//
//   static LogcatViewer? _instance;
//
//   static LogcatViewer get instance {
//     _instance ??= LogcatViewer();
//     return _instance!;
//   }
//
//   // static Future<String?> get platformVersion async {
//   //   final String? version = await _channel.invokeMethod('startLogInfo');
//   //   return version;
//   // }
//
//   //开启 native 轮询
//   startLog() async {
//     _channel.invokeMethod("startLogInfo");
//     _onListenLogData();
//   }
//
//   //关闭 native 轮询
//   stopLog() async {
//     _channel.invokeMethod("stopLogInfo");
//   }
//
//   //监听 native event 数据流
//   void _onListenLogData() {
//     _eventChannel.receiveBroadcastStream().distinct((a, b) {
//       return a == b;
//     }).listen((data) {
//       // if (_logs.length > maxLogCount) {
//       //   // 删掉第一行，否则，就是，从后往前的 第 10 万个字符
//       //   int subStartIndex = _logs.indexOf("\n\n");/**/
//       //   if (subStartIndex < 0) {
//       //     subStartIndex = _logs.length - maxLogCount;
//       //   }
//       //   _logs = _logs.substring(subStartIndex);
//       // }
//       //   _logs += "${data as String}\n\n";// 拼接log
//       if (_LogList.length >= maxLogCount) {
//         _LogList.removeAt(0);
//       }
//       _LogList.add(data/*"${data}"*/);
//
//       for (var element in _listenerList) {
//         element.call(_LogList);
//       }
//       // onEvent?.call(data as String);
//     }, onError: (e){
//       print(e);
//     });
//   }
//
//   addListener(LogCallback<List<String>> listener) {
//     _listenerList.add(listener);
//   }
//   removeListener(LogCallback<List<String>> listener){
//     _listenerList.remove(listener);
//   }
//   clearListener(){
//     _listenerList.clear();
//   }
// }
